package org.gwt.grin.client.animator;

/**
 * Interface to be implemented by an e.g. {@link EntryPoint}. This interface
 * provides state change hooks, including initialization.
 * 
 * @author Bill Foote (http://jovial.com)
 * @author ggeorg
 * @see AnimationEngine
 */
public interface AnimationContext {

	/**
	 * Run the first part of initialization. This is called by the
	 * {@link AnimationEngine} before all of the animation clients are
	 * initialized.
	 */
	void animationInitialize();

	/**
	 * Run the last part of the initialization. This is called by the
	 * {@link AnimationEngine} after all of the animation clients are
	 * initialized. This is the last initialization step before running the
	 * actual animation loop. It's a good place to set the state of the UI, e.g.
	 * by calling a GRIN Show object's {@code activateSegment()} command.
	 */
	void animationFinishInitialization();
}
